// pages/game/game.js
// 倒计时的时间
var TIME=60;
Page({
//非常重要***
//只要写在data里面的属性才能在wxml中使用
//才可以使用数据双向绑定的功能
  data: {
    //表示色块行数的属性
       row:2,
       //盛放色块详细信息的数组
       items:[],
       //倒计时时间
       time:TIME,
       score:0,//分数
       step:0//步数

  },
  //初始化页面调用options
  //可以在这个函数中初始化不在wxml中使用的属性
  onLoad:function(){
    this.width=750;
    this.getDeviceWidth();
    // 提升难度先构造
    this.difficulty=0.11;
    this.gameCore();
    //初始化titles的数组
    this.titles=["色狼","色帝","色王","色鬼","色圣","色魔","色仙"];
    // 获取标签(title)的下标
    this.titleIndex=0;
  },
  //游戏的核心部分
  gameCore:function(){
    //每一个色块的间距
    var tempColorViewWidth=this.width/this.data.row;
    //平均分的临时色块的宽度
    var space=tempColorViewWidth*0.1;
    //计算后的色块间距0.1的意思是说每个间距都占一个颜色的10%
    var allSpace=space*(this.data.row+1);
    //总间距
    var colorViewWidth=(this.width-allSpace)/this.data.row;
    //色块的宽度=（总宽度-总间距）/一行有多少色块
    var color=this.randColor();
    // 获取随机的颜色
    var allNums = this.data.row * this.data.row;
    var specialIndex = parseInt(Math.random() * allNums);
    var tempList=[]; 
    //循环创建色块的信息放入数组
    for(var i=0;i<allNums;i++){
     var info={
       width:colorViewWidth,
       color:color,
       space:space,
       opacity:i==specialIndex?this.difficulty:1
     }
     tempList.push(info);
    }
    this.setData({
      items:tempList
    });
  },
  //随机颜色的函数
  randColor:function(){
    var r = parseInt(Math.random() * 256);
    var g = parseInt(Math.random() * 256);
    var b = parseInt(Math.random() * 256);
    //随机0-255之间的整数
    return "rgb("+r+","+g+","+b+")";
  
  },
  //游戏设备的宽度
getDeviceWidth:function(){
  wx.getSystemInfo({
    success: function(res) {
      this.width=res.windowWidth;
    }.bind(this)
  })
},
success:function(){
  //成功时候更新行数row的值
  //如果做难度扩展可以添加专门改变this.data.row的值的函数
  this.setData({
    row:++this.data.row,
    step:++this.data.step,
    time:TIME,

  });
  //走五步给一份
  if(this.data.step%4==0){
    this.setData({
      score:++this.data.score
    });

  }
  if (this.data.step% 8 == 0) {
    ++this.titleIndex;
  }
  //防止数组越界
  if (this.titleIndex >= this.titles.length) {
    this.titleIndex = this.titles.length - 1;
  }
  //难度提升
  if(this.difficulty<0.95 && this.data.step%2==0 ){
    this.difficulty=this.difficulty+0.05

  }
  
},
 getTitle:function(){
   return this.titles[this.titleIndex];
 },
fail:function(){
    // 重置时间状态，行数
  this.setData({
    row:2,
    time:TIME,
    score:0,
  });
  
  clearInterval(this.timer);
  wx.showModal({
    title: '温馨提示',
    content: '您已经被警方锁定，您就是被追查的'+this.getTitle()+'，是否重新检测',//todo:暂时写死，后面根据等级的名字提示
    showCancel: true,
    cancelText: '去自首',
    cancelColor: 'red',
    confirmText: '继续检测',
    confirmColor: 'yellow',
    success: function(res) {
      console.log(res);
      //点击cancel返回上一页
      //点击继续监测重新开始游戏
      res.cancel?this.back():this.reStartGame();
    }.bind(this)
    
  })

  this.titleIndex = 0;
  this.difficulty=0.1;
},
back:function(){
  wx.navigateBack({
    //todo:上传分数到服务器里面
  })
},
  reStartGame:function(){

    this.timer=setInterval(this.updateTime,1000);
    this.gameCore();
  },
 chooseAction: function (e) {
  var opacity = e.currentTarget.dataset.opacity;
  opacity == 1 ? this.fail() : this.success();
  this.gameCore();
},
// 更新时间的函数
updateTime:function(){
  this.setData({
    time:--this.data.time
  });
  if(this.data.time<=0){
    this.fail();
  }
},
// 页面显示都要调用这个函数
onShow:function(){
this.timer=setInterval(this.updateTime,1000);
this.playMusic();
},
onUnload:function(){
  clearInterval(this.timer);
  this.timer=null;
  this.stopMusic();
},
playMusic:function(){
  wx.playBackgroundAudio({
    dataUrl: 'http://bmob-cdn-19182.b0.upaiyun.com/2018/05/16/70d4d4f040ee2ecb8004cb4d4b8ee9e2.mp3',
    
  })
},
stopMusic:function(){
  wx.stopBackgroundAudio();
}
})